[ 'addIndex', 'recentchanges', 'rc_name_type_patrolled_timestamp',
'patch-add-rc_name_type_patrolled_timestamp_index.sql' ],
[ 'addField', 'change_tag', 'ct_id', 'patch-change_tag-ct_id.sql' ],
- [ 'addField', 'tag_summary', 'ts_id', 'patch-tag_summary-ts_id.sql' ],
// 1.29
[ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ],
// 1.33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
];
}
// 1.15
[ 'addTable', 'change_tag', 'patch-change_tag.sql' ],
[ 'addTable', 'tag_summary', 'patch-tag_summary.sql' ],
- [ 'addTable', 'valid_tag', 'patch-valid_tag.sql' ],
// 1.16
[ 'addTable', 'user_properties', 'patch-user_properties.sql' ],
[ 'doLogUsertextPopulation' ],
[ 'doLogSearchPopulation' ],
[ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ],
- [ 'addIndex', 'tag_summary', 'tag_summary_rc_id', 'patch-change_tag-indexes.sql' ],
+ [ 'dropIndex', 'change_tag', 'ct_rc_id', 'patch-change_tag-indexes.sql' ],
[ 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ],
[ 'doUpdateMimeMinorField' ],
[ 'doRevisionPageRevIndexNonUnique' ],
[ 'doNonUniquePlTlIl' ],
[ 'addField', 'change_tag', 'ct_id', 'patch-change_tag-ct_id.sql' ],
- [ 'addField', 'tag_summary', 'ts_id', 'patch-tag_summary-ts_id.sql' ],
[ 'modifyField', 'recentchanges', 'rc_ip', 'patch-rc_ip_modify.sql' ],
[ 'addIndex', 'archive', 'usertext_timestamp', 'patch-rename-ar_usertext_timestamp.sql' ],
// 1,33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
];
}
[ 'table' => 'change_tag', 'field' => 'ct_log_id' ],
[ 'table' => 'change_tag', 'field' => 'ct_rev_id' ],
[ 'table' => 'page_restrictions', 'field' => 'pr_user' ],
- [ 'table' => 'tag_summary', 'field' => 'ts_log_id' ],
- [ 'table' => 'tag_summary', 'field' => 'ts_rev_id' ],
[ 'table' => 'user_newtalk', 'field' => 'user_id' ],
[ 'table' => 'user_properties', 'field' => 'up_user' ],
];
[ 'addIndex', 'recentchanges', 'rc_name_type_patrolled_timestamp',
'patch-add-rc_name_type_patrolled_timestamp_index.sql' ],
[ 'addField', 'change_tag', 'ct_id', 'patch-change_tag-ct_id.sql' ],
- [ 'addField', 'tag_summary', 'ts_id', 'patch-tag_summary-ts_id.sql' ],
// 1.29
[ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ],
// 1.33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
// KEEP THIS AT THE BOTTOM!!
[ 'doRebuildDuplicateFunction' ],
[ 'addTable', 'updatelog', 'patch-updatelog.sql' ],
[ 'addTable', 'change_tag', 'patch-change_tag.sql' ],
[ 'addTable', 'tag_summary', 'patch-tag_summary.sql' ],
- [ 'addTable', 'valid_tag', 'patch-valid_tag.sql' ],
[ 'addTable', 'user_properties', 'patch-user_properties.sql' ],
[ 'addTable', 'log_search', 'patch-log_search.sql' ],
[ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ],
// 1.33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
];
}
// 1.15
[ 'addTable', 'change_tag', 'patch-change_tag.sql' ],
[ 'addTable', 'tag_summary', 'patch-tag_summary.sql' ],
- [ 'addTable', 'valid_tag', 'patch-valid_tag.sql' ],
// 1.16
[ 'addTable', 'user_properties', 'patch-user_properties.sql' ],
[ 'addIndex', 'recentchanges', 'rc_name_type_patrolled_timestamp',
'patch-add-rc_name_type_patrolled_timestamp_index.sql' ],
[ 'addField', 'change_tag', 'ct_id', 'patch-change_tag-ct_id.sql' ],
- [ 'addField', 'tag_summary', 'ts_id', 'patch-tag_summary-ts_id.sql' ],
// 1.29
[ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ],
// 1.33
[ 'dropField', 'change_tag', 'ct_tag', 'patch-drop-ct_tag.sql' ],
+ [ 'dropTable', 'valid_tag' ],
+ [ 'dropTable', 'tag_summary' ],
];
}
DROP INDEX ct_rev_id ON /*_*/change_tag;
DROP INDEX ct_tag ON /*_*/change_tag;
-DROP INDEX ts_rc_id ON /*_*/tag_summary;
-DROP INDEX ts_log_id ON /*_*/tag_summary;
-DROP INDEX ts_rev_id ON /*_*/tag_summary;
-
CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag);
CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag);
CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag);
CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
-
-CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
+++ /dev/null
--- Primary key in tag_summary table
-
-ALTER TABLE /*$wgDBprefix*/tag_summary
- ADD COLUMN ts_id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
- ADD PRIMARY KEY (ts_id);
+++ /dev/null
-ALTER TABLE /*_*/tag_summary MODIFY ts_log_id int unsigned NULL;
\ No newline at end of file
+++ /dev/null
-ALTER TABLE /*_*/tag_summary MODIFY ts_rev_id int unsigned NULL;
\ No newline at end of file
+++ /dev/null
--- Andrew Garrett, 2009-01
-CREATE TABLE /*_*/valid_tag (
- vt_tag varchar(255) NOT NULL PRIMARY KEY
-) /*$wgDBTableOptions*/;
+++ /dev/null
--- Primary key in tag_summary table
-
-ALTER TABLE /*_*/tag_summary ADD ts_id INT IDENTITY;
-ALTER TABLE /*_*/tag_summary ADD CONSTRAINT pk_tag_summary PRIMARY KEY(ts_id)
-- Covering index, so we can pull all the info only out of the index.
CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
--- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT
--- that only works on MySQL 4.1+
-CREATE TABLE /*_*/tag_summary (
- ts_id int NOT NULL PRIMARY KEY IDENTITY,
- -- RCID for the change
- ts_rc_id int NULL REFERENCES /*_*/recentchanges(rc_id),
- -- LOGID for the change
- ts_log_id int NULL REFERENCES /*_*/logging(log_id),
- -- REVID for the change
- ts_rev_id int NULL REFERENCES /*_*/revision(rev_id),
- -- Comma-separated list of tags
- ts_tags nvarchar(max) NOT NULL
-);
-
-CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
-
-
-CREATE TABLE /*_*/valid_tag (
- vt_tag nvarchar(255) NOT NULL PRIMARY KEY
-);
-
-- Table for storing localisation data
CREATE TABLE /*_*/l10n_cache (
-- Language code
CREATE INDEX &mw_prefix.change_tag_i02 ON &mw_prefix.change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
-CREATE TABLE &mw_prefix.tag_summary (
- ts_id NUMBER NOT NULL,
- ts_rc_id NUMBER NULL,
- ts_log_id NUMBER NULL,
- ts_rev_id NUMBER NULL,
- ts_tags BLOB NOT NULL
-);
-ALTER TABLE &mw_prefix.tag_summary ADD CONSTRAINT &mw_prefix.tag_summary_pk PRIMARY KEY (ts_id);
-CREATE UNIQUE INDEX &mw_prefix.tag_summary_u01 ON &mw_prefix.tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX &mw_prefix.tag_summary_u02 ON &mw_prefix.tag_summary (ts_log_id);
-CREATE UNIQUE INDEX &mw_prefix.tag_summary_u03 ON &mw_prefix.tag_summary (ts_rev_id);
-
-CREATE TABLE &mw_prefix.valid_tag (
- vt_tag VARCHAR2(255) NOT NULL
-);
-ALTER TABLE &mw_prefix.valid_tag ADD CONSTRAINT &mw_prefix.valid_tag_pk PRIMARY KEY (vt_tag);
-
-- This table is not used unless profiling is turned on
--CREATE TABLE &mw_prefix.profiling (
-- pf_count NUMBER DEFAULT 0 NOT NULL,
+++ /dev/null
-CREATE TABLE valid_tag (
- vt_tag TEXT NOT NULL PRIMARY KEY
-);
CREATE INDEX change_tag_tag_id_id ON change_tag(ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
-CREATE SEQUENCE tag_summary_ts_id_seq;
-CREATE TABLE tag_summary (
- ts_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('tag_summary_ts_id_seq'),
- ts_rc_id INTEGER NULL,
- ts_log_id INTEGER NULL,
- ts_rev_id INTEGER NULL,
- ts_tags TEXT NOT NULL
-);
-ALTER SEQUENCE tag_summary_ts_id_seq OWNED BY tag_summary.ts_id;
-CREATE UNIQUE INDEX tag_summary_rc_id ON tag_summary(ts_rc_id);
-CREATE UNIQUE INDEX tag_summary_log_id ON tag_summary(ts_log_id);
-CREATE UNIQUE INDEX tag_summary_rev_id ON tag_summary(ts_rev_id);
-
-CREATE TABLE valid_tag (
- vt_tag TEXT NOT NULL PRIMARY KEY
-);
-
CREATE TABLE user_properties (
up_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
up_property TEXT NOT NULL,
+++ /dev/null
-DROP TABLE IF EXISTS /*_*/tag_summary_tmp;
-
-CREATE TABLE /*$wgDBprefix*/tag_summary_tmp (
- ts_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
- ts_rc_id int NULL,
- ts_log_id int NULL,
- ts_rev_id int NULL,
- ts_tags blob NOT NULL
-);
-
-INSERT OR IGNORE INTO /*_*/tag_summary_tmp (
- ts_rc_id, ts_log_id, ts_rev_id, ts_tags )
- SELECT
- ts_rc_id, ts_log_id, ts_rev_id, ts_tags
- FROM /*_*/tag_summary;
-
-DROP TABLE /*_*/tag_summary;
-
-ALTER TABLE /*_*/tag_summary_tmp RENAME TO /*_*/tag_summary;
-
-CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
-- Covering index, so we can pull all the info only out of the index.
CREATE INDEX /*i*/change_tag_tag_id_id ON /*_*/change_tag (ct_tag_id,ct_rc_id,ct_rev_id,ct_log_id);
--- Rollup table to pull a LIST of tags simply without ugly GROUP_CONCAT
--- that only works on MySQL 4.1+
-CREATE TABLE /*_*/tag_summary (
- ts_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
- -- RCID for the change
- ts_rc_id int NULL,
- -- LOGID for the change
- ts_log_id int unsigned NULL,
- -- REVID for the change
- ts_rev_id int unsigned NULL,
- -- Comma-separated list of tags
- ts_tags blob NOT NULL
-) /*$wgDBTableOptions*/;
-
-CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
-CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
-
-
-CREATE TABLE /*_*/valid_tag (
- vt_tag varchar(255) NOT NULL PRIMARY KEY
-) /*$wgDBTableOptions*/;
-- Table for storing localisation data
CREATE TABLE /*_*/l10n_cache (
$this->tablesUsed[] = 'change_tag';
$this->tablesUsed[] = 'change_tag_def';
- $this->tablesUsed[] = 'tag_summary';
- $this->tablesUsed[] = 'valid_tag';
// Truncate these to avoid the supposed-to-be-unused IDs in tests here turning
// out to be used, leading ChangeTags::updateTags() to pick up bogus rc_id,
$dbw = wfGetDB( DB_MASTER );
$dbw->delete( 'change_tag', '*' );
$dbw->delete( 'change_tag_def', '*' );
- $dbw->delete( 'valid_tag', '*' );
$rcId = 123;
ChangeTags::updateTags( [ 'tag1', 'tag2' ], [], $rcId );
];
$res = $dbr->select( 'change_tag_def', [ 'ctd_name', 'ctd_user_defined' ], '' );
$this->assertEquals( $expected, iterator_to_array( $res, false ) );
-
- $this->assertEquals( [], $dbr->selectFieldValues( 'valid_tag', 'vt_tag', '' ) );
}
}